import 'package:get/get.dart';
import 'package:hive/hive.dart';
import '../model/note.dart';

class NoteIndexController extends GetxController {
  // 笔记列表
  var notes = <Note>[].obs;

  // 当前分类
  var selectedCategory = 'All'.obs;

  // 分类列表
  var categories = ['All', 'Work', 'Personal', 'Ideas'].obs;

  // 当前页码
  var currentPage = 1.obs;

  // 是否正在加载
  var isLoading = false.obs;

  // Hive 盒子
  late Box<Note> notesBox;

  @override
  void onInit() {
    super.onInit();
    notesBox = Hive.box<Note>('notes');
    loadNotes();
  }

  // 从 Hive 加载数据
  void loadNotes() async {
    if (isLoading.value) return; // 防止重复加载
    isLoading.value = true;

    // 模拟网络请求延迟
    // await Future.delayed(Duration(seconds: 2));

    // 从 Hive 中获取数据
    List<Note> newNotes = notesBox.values
        .skip((currentPage.value - 1) * 10)
        .take(10)
        .toList();
    if (newNotes.isEmpty) {
      // 如果没有更多数据，停止加载
      isLoading.value = false;
      return;
    }
    notes.addAll(newNotes);
    currentPage.value++;
    isLoading.value = false;
  }

  // 切换分类
  void changeCategory(String category) {
    selectedCategory.value = category;
    notes.clear(); // 清空列表
    currentPage.value = 1; // 重置页码
    loadNotes(); // 重新加载数据
  }

  // 添加笔记
  void addNote({
    required String title,
    required String content,
    required String category,
    required DateTime createdAt,
    required DateTime updatedAt,
  }) {
    final note = Note(
      title: title,
      content: content,
      categoryName: category,
      createdAt: createdAt,
      updatedAt: updatedAt,
    );
    notesBox.add(note); // 添加到 Hive
    notes.insert(0, note); // 添加到列表顶部
  }

  // 删除笔记
  void deleteNote(int index) {
    final note = notes[index];
    note.delete(); // 从 Hive 删除
    notes.removeAt(index); // 从列表中删除
  }
}